﻿using System;
using System.Globalization;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using CalculoPreciosUnitarios.Logica.GestorBaseDeDatos.LectorExcel;
using CalculoPreciosUnitarios.Ventanas.Articulo;
using CalculoPreciosUnitarios.Ventanas.Porcentuales_Cantidades;
using CalculoPreciosUnitarios.Ventanas.Rubro;
using CalculoPreciosUnitarios.Ventanas.Unidad;
using CalculoPreciosUnitarios.Ventanas;

namespace CalculoPreciosUnitarios
{
    /// <summary>
    /// Lógica de interacción para MainWindow.xaml
    /// </summary>
    /// 

    public partial class MainWindow : Window
    {

        Thread thread = System.Threading.Thread.CurrentThread;
        //NumberFormatInfo formatoNumerico = ((NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone());
        //CultureInfo cultura = CultureInfo.CreateSpecificCulture("es-CO");

        #region Contructor

        public MainWindow()
        {
            InitializeComponent();
            
            //formatoNumerico.NumberDecimalSeparator = ",";
            //formatoNumerico.CurrencyDecimalSeparator = ",";
            //formatoNumerico.NumberGroupSeparator = ".";
            //formatoNumerico.CurrencyGroupSeparator = ".";
            //cultura.NumberFormat = formatoNumerico;
            //thread.CurrentCulture = cultura;
       }

        #endregion 

        #region Windows Methods

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            AplicarConfiguracionRegional();
            int height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
            int widht = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;

            this.Width = widht;
            this.Height = height;
            this.MenuGeneral.Width = height * 2;

            this.fondoImage.Width = widht;
            this.fondoImage.Height = height * 1.5;
        }


        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            const string msg = "Está usted seguro que desea salir de la aplicación?";
            const string titulo = "Cerrar la aplicación";
            var result = MessageBox.Show(msg, titulo, MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (result == MessageBoxResult.No)
            {
                e.Cancel = true;
            }
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.Key.ToString().ToUpper())
            {
                case "F1":
                    break;
                case "F2":
                    VentanaNuevoRubro();
                    break;
                case "F3":
                    VentanaNuevoArticulo();
                    break;
                case "F4":
                    break;
                case "F5":
                    cargar_plantilla();
                    break;
                case "ESCAPE":
                    Salir();
                    break;
                default:
                    return;
            }
        }


        private void cargar_plantilla() 
        {
            FCargaPorcentualesCantidades fcpc = new FCargaPorcentualesCantidades();
            fcpc.ShowInTaskbar = false;
            fcpc.Owner = this; AplicarEfecto(this);
            fcpc.ShowDialog();
            bool?
            resultado = fcpc.DialogResult;
            if (resultado != null)
            {
                if (resultado == false)
                {
                    QuitarEfecto(this);
                }
            }
        }

        private void AplicarEfecto(Window win)
        {
            var objBlur = new System.Windows.Media.Effects.BlurEffect();
            objBlur.Radius = 5;
            win.Effect = objBlur;
        }

        private void QuitarEfecto(Window win)
        {
            win.Effect = null;
        }

        private void btnNuevoArticulo_Click(object sender, RoutedEventArgs e)
        {
            VentanaNuevoArticulo();
        }

        void VentanaNuevoArticulo()
        {
            FArticulo fcpc = new FArticulo();
            fcpc.ShowInTaskbar = false;
            fcpc.Owner = this; AplicarEfecto(this);
            fcpc.ShowDialog();
            bool?
            resultado = fcpc.DialogResult;
            if (resultado != null)
            {
                if (resultado == false)
                {
                    QuitarEfecto(this);
                }
            }
        }

        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            Salir();
        }

        private void btnNuevoRubro_Click(object sender, RoutedEventArgs e)
        {
            VentanaNuevoRubro();
        }

        private void btnImprimirPlantilla_Click(object sender, RoutedEventArgs e)
        {
            cargar_plantilla();
        }

        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            MenuItem _itemMenu = e.Source as MenuItem;
            switch (_itemMenu.Name)
            {
                case "UNIDAD":
                    Ventana_Unidad();
                    break;
                case "UNIDADES_EXCEL":
                    CargarPorExcel("UNIDADES_EXCEL");
                    break;
                case "RUBROS_EXCEL":
                    CargarPorExcel("RUBROS_EXCEL");
                    break;
                case "SUBRUBROS_EXCEL":
                    CargarPorExcel("SUBRUBROS_EXCEL");
                    break;
                case "ARTICULOS_EXCEL":
                    CargarPorExcel("ARTICULOS_EXCEL");
                    break;
                case "PORCENTAJES_EXCEL":
                    CargarPorExcel("PORCENTAJES_EXCEL");
                    break;
                case "COTIZACIONES_EXCEL":
                    CargarPorExcel("COTIZACIONES_EXCEL");
                    break;
                case "RUBROS":
                    VentanaNuevoRubro();
                    break;
                case "ARTICULOS":
                    VentanaNuevoArticulo();
                    break;
                case "COTIZACIONES":
                    cargar_plantilla();
                    break;
                case "ACERCA_DE":
                    Ventana_AcercaDe();
                    break;
                case "SALIR":
                    Salir();
                    break;
                default:
                    return;
            }
        }

        #endregion        

        #region Auxiliar Methods

        private void VentanaNuevoRubro()
        {
            NuevoRubro nuevoRubro = new NuevoRubro();
            nuevoRubro.ShowInTaskbar = false;
            nuevoRubro.Owner = this; AplicarEfecto(this);
            nuevoRubro.ShowDialog();
            bool?
            resultado = nuevoRubro.DialogResult;
            if (resultado != null)
            {
                if (resultado == false)
                {
                    QuitarEfecto(this);
                }
            }
        }

        private void Ventana_Unidad()
        {
            W_Unidad unidad = new W_Unidad();
            unidad.ShowInTaskbar = false;
            unidad.Owner = this; AplicarEfecto(this);
            unidad.ShowDialog();
            bool?
            resultado = unidad.DialogResult;
            if (resultado != null)
            {
                if (resultado == false)
                {
                    QuitarEfecto(this);
                }
            }
        }

        private void Ventana_AcercaDe()
        {
            AcercaDe acercaDe = new AcercaDe();
            acercaDe.ShowInTaskbar = false;
            acercaDe.Owner = this; AplicarEfecto(this);
            acercaDe.ShowDialog();
            bool?
            resultado = acercaDe.DialogResult;
            if (resultado != null)
            {
                if (resultado == false)
                {
                    QuitarEfecto(this);
                }
            }
        }

        private void Salir()
        {
            this.Close();
        }

        private void CargarPorExcel(string comando)
        {
            LectorExcelDB lectorExcelDB = new LectorExcelDB();

            switch (comando)
            {
                case "UNIDADES_EXCEL":
                    lectorExcelDB.CargarUnidadesPorExcel();
                    break;
                case "RUBROS_EXCEL":
                    lectorExcelDB.CargarRubrosPorExcel();
                    break;
                case "SUBRUBROS_EXCEL":
                    lectorExcelDB.CargarSubRubrosPorExcel();
                    break;
                case "ARTICULOS_EXCEL":
                    lectorExcelDB.CargarArticulosPorExcel();
                    break;
                case "PORCENTAJES_EXCEL":
                    lectorExcelDB.CargarPorcentualesPorExcel();
                    break;
                case "COTIZACIONES_EXCEL":
                    lectorExcelDB.CargarCotizacionesPorExcel();
                    break;
                default:
                    return;
            }
        }

        private void AplicarConfiguracionRegional()
        {
            NumberFormatInfo formatoNumerico = ((NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone());
            CultureInfo culturaAplicacion = (CultureInfo)CultureInfo.CurrentCulture.Clone();
            Console.WriteLine("Cultura: " + culturaAplicacion.Name);
            CultureInfo cultura = CultureInfo.CreateSpecificCulture("es-AR");

            formatoNumerico.NumberDecimalSeparator = ",";
            formatoNumerico.CurrencyDecimalSeparator = ",";
            formatoNumerico.NumberGroupSeparator = ".";
            formatoNumerico.CurrencyGroupSeparator = ".";
            cultura.NumberFormat = formatoNumerico;
            thread.CurrentCulture = cultura;
        }

        #endregion   


    }
}